-- UIConfirm
-- Create by chengb Nov/25/2014
-- 确认提示框界面

--UIConfirm继承自Layer
UIConfirm = class("UIConfirm", function()
	return cc.Layer:create();
end)

----------------------------------------------------
-- @param msg        提示框的内容
-- @param okFunc     点击确认的处理函数
-- @param okArgs     okFunc所需的参数列表（当参数较多时，这里通常传入table类型）
-- @param cancelFunc 点击取消的处理函数
-- @param cancelArgs cancelFunc所需的参数列表（当参数较多时，这里通常传入table类型）
-- @param okText     确定按钮文本
function UIConfirm.create(msg, okFunc, okArgs, cancelFunc, cancelArgs, okText)
    return UIConfirm.new(msg, okFunc, okArgs, cancelFunc, cancelArgs, okText);
end

-- 内部函数声明
local resize;

-- 构造函数
function UIConfirm:ctor(msg, okFunc, okArgs, cancelFunc, cancelArgs, okText)
    self:setName("UIConfirm");
    -- 初始化
    local node = cc.CSLoader:createNode("layout/dialog/Confirm.csb");
    self:addChild(node);
    self.node = node;

    local CT = findChildByName(node, "CT");
    local BT = findChildByName(node, "BT");

    -- 设置内容
    local contentLabel = CT:getChildByName("content");
    TextStyleM.setTextStyle(contentLabel, TextStyleM.TEXT_SIZE_SMALL, TextStyleM.TEXT_COLOR_DARK_BROWN);
    applyString(contentLabel, msg);

    -- 注册确认按钮点击事件
    local okBtn = CT:getChildByName("btn_ok")
    local function onOkClick(sender, eventType)
        if eventType == ccui.TouchEventType.ended then
            AudioM.playFx("button_select");
            UIMgr.getCurrentScene():removeDialog(self);
            if type(okFunc) == 'function' then
                okFunc(okArgs);
                return true;
            end
            return false;
        end
    end
    okBtn:addTouchEventListener(onOkClick);
    TextStyleM.setTextStyle(okBtn, TextStyleM.TEXT_SIZE_MIDDLE, TextStyleM.TEXT_COLOR_BROWN_YELLOW, true);
    if not okText then
        okBtn:setTitleText(getLocStr("confirm"));
    else
        okBtn:setTitleText(okText);
    end

    -- 注册取消按钮点击事件
    local canelBtn = BT:getChildByName("btn_back")
    local function onCancelClick(sender, eventType)
        if eventType == ccui.TouchEventType.ended then
            AudioM.playFx("button_return");
            UIMgr.getCurrentScene():removeDialog(self);
            if type(cancelFunc) == 'function' then
                cancelFunc(cancelArgs);
            end
        end
    end
    AddBackEventHandler(self, canelBtn, onCancelClick);
    TextStyleM.setTextStyle(canelBtn, TextStyleM.TEXT_SIZE_MIDDLE, TextStyleM.TEXT_COLOR_BROWN_YELLOW, true);
    canelBtn:setTitleText(getLocStr("btn_text_back"));

    self.onOkClick = onOkClick;
    self.onCancelClick = onCancelClick;

    -- 适配
    resize(node);
end

-- 适配
resize = function(node)
    local w = AlignM.frameSize.width;
    local h = AlignM.frameSize.height;

    -- bg居中显示并充满整个屏幕
    AlignM.fitToScreen(node, "bg");

    -- CT居中并缩放至合适大小
    AlignM.alignToCenter(node, "CT");

    -- BT置于底部并缩放至合适大小
    AlignM.alignToBottomCenter(node, "BT");
 end

return UIConfirm;
